Network Protocol Programming in Haskell
نویسنده
چکیده
Over seven years, we have developed several network protocol libraries including anti-spam, DNS, HTTP/1.1, HTTP/2 and TLS 1.3 in Haskell. Based on these experiences, we regard Haskell as a safe and highly-concurrent network programming language thanks to its strong type system and lightweight threads (i.e. green threads). This paper describes advantages and disadvantages of Haskell and reports our experiences. Haskell is typically described as a purely functional programming language. Unfortunately, this catch-phrase gives programmers an impression that is difficult to approach. Roughly speaking, pure means that Haskell’s type system clearly separates pure functions (i.e. without side effects) and impure functions (i.e. with side effects), and prevents pure functions from calling impure functions. Functional indicates that Haskell encourages modular programming with immutable data which provides consistency for concurrent programming.
منابع مشابه
Analysis and Modeling of VoIP Servers: A Linear Programming Approach
The SIP protocol was standardized by the IETF at the application layer for initiating, managing, and terminating multimedia sessions and has been widely used as the main signaling protocol on both the Internet and VoIP networks. Most challenges in this protocol are overload and lack of proper state distribution. These challenges cause a wide range of next-generation network users to face a shar...
متن کاملBuilding .NET GUIs for Haskell applications
.NET is an emerging Microsoft’s project which promotes a new framework for Software Development emphasizing the use of Internet resources and the interaction between components written in different programming languages. Whereas functional programming languages such as Haskell are well-suited for developing tools to analyze, verify and transform programs, typical Haskell compilers do not provid...
متن کاملImplementation of Protocol
Implementation of network protocol stacks is time-consuming and error prone due to its complex and performance-critical nature. The project Implementation of Protocol Stacks (IPS), addresses this problem by developing a high-level statically typed language to facilitate the efficient implementation of network protocol stacks. This report presents the accomplishments for the first year of PhD st...
متن کاملProgramming Modular Synthesizers in Haskell
In this demonstration, we present an implementation of a modular synthesizer in Haskell using Yampa. A synthesizer, be it a hardware instrument or a pure software implementation, as here, is said to be modular if it provides sound-generating and sound-shaping components that can be interconnected in arbitrary ways. Yampa, a Haskell-embedded implementation of Functional Reactive Programming, sup...
متن کاملOn Two Infinite Families of Pairing Bijections
We describe two general mechanisms for producing pairing bijections (bijective functions defined from N2 → N). The first mechanism, using n-adic valuations results in parameterized algorithms generating a countable family of distinct pairing bijections. The second mechanism, using characteristic functions of subsets of N provides 2N distinct pairing bijections. Mechanisms to combine such pairin...
متن کامل